home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus Special 25 / AMIGAplus Sonderheft 25 (2000)(Falke)(DE)(Track 1 of 4)[!].iso / Updates / HD-Installer / jst_dev / sources / src / loaders / Prince / princeread.asm < prev    next >
Assembly Source File  |  2000-04-12  |  14KB  |  590 lines

  1. ; IRA V1.02  (Sep  6 1993)  (c)1993  Tim Ruehsen
  2.  
  3. ; re-source of Prince Of Persia read routine
  4.  
  5.     include    "/disklib_hard/trackmoves.i"
  6.  
  7. CIAB_PRA    EQU    $BFD000
  8. CIAB_PRB    EQU    $BFD100
  9. CIAB_DDRA    EQU    $BFD200
  10. CIAB_DDRB    EQU    $BFD300
  11. CIAB_ICR    EQU    $BFDD00
  12. CIAA_PRA    EQU    $BFE001
  13. CIAA_DDRA    EQU    $BFE201
  14. CIAA_DDRB    EQU    $BFE301
  15. CIAA_TALO    EQU    $BFE401
  16. CIAA_TAHI    EQU    $BFE501
  17. CIAA_ICR    EQU    $BFED01
  18. CIAA_CRA    EQU    $BFEE01
  19. INTREQR        EQU    $DFF01E
  20. DSKPTH        EQU    $DFF020
  21. DSKLEN        EQU    $DFF024
  22. DSKSYNC        EQU    $DFF07E
  23. DMACON        EQU    $DFF096
  24. INTREQ        EQU    $DFF09C
  25. ADKCON        EQU    $DFF09E
  26.  
  27.  
  28.     include    "/lib/libs.i"
  29.  
  30.  
  31.     XDEF    _ReadPOPSectors
  32.  
  33.     XREF    _SysBase
  34.  
  35.  
  36. RAW_LEN = $3100
  37.  
  38. _ReadPOPSectors:
  39.     move.l    4(a7),A1    ; buffer
  40.     move.l    8(a7),D0    ; offset
  41.     move.l    12(a7),D1    ; lenght
  42.  
  43.     movem.l    D1-A6,-(sp)
  44.  
  45.     bsr    @ReadPOPSectors
  46.  
  47.     movem.l    (sp)+,D1-A6
  48.     rts
  49.  
  50. @ReadPOPSectors:
  51.     movem.l    D1-A6,-(sp)
  52.  
  53.     move.l    A1,buffer
  54.     move.l    D0,offset
  55.     move.l    D1,length
  56.  
  57.     move.l    _SysBase,A6
  58.     move.l    #RAW_LEN,D0
  59.     move.l    #MEMF_CHIP,D1
  60.     JSRLIB    AllocMem
  61.     move.l    D0,rawbuffer
  62.     beq    error$
  63.  
  64.  
  65.     move.l    _SysBase,A6
  66.     JSRLIB    Disable
  67.     move.l    _SysBase,A6
  68.     JSRLIB    SuperState
  69.     move.l    D0,userstack
  70.  
  71.     move.w    #$2700,SR
  72.  
  73.     moveq.l    #0,D0
  74.     jsr    _InitDisk
  75.     jsr    _WaitDiskReady
  76.  
  77.     bsr    initread
  78.  
  79.     move.l    buffer,A1
  80.     move.l    rawbuffer,A0
  81.     move.l    offset,D0
  82.     move.l    length,D1
  83.     nop
  84.     nop
  85.     bsr    doread
  86.     bmi    ok$
  87.     st.b    errorflag
  88. ok$
  89.     nop
  90.     nop
  91.     jsr    _EndDisk
  92.  
  93.     move.w    #$2000,SR
  94.     move.l    userstack,D0
  95.     move.l    _SysBase,A6
  96.     JSRLIB    UserState
  97.     move.l    _SysBase,A6
  98.     JSRLIB    Enable
  99.             
  100.     move.l    _SysBase,A6
  101.     move.l    rawbuffer,A1
  102.     move.l    #RAW_LEN,D0
  103.     JSRLIB    FreeMem
  104.  
  105. exit$
  106.     moveq.l    #0,D0
  107.     move.b    errorflag,D0
  108.     movem.l    (sp)+,D1-A6
  109.     rts
  110.  
  111. error$
  112.     moveq    #-1,D7
  113.     bra    exit$
  114.  
  115.  
  116. LAB_0006:
  117.     MOVEM.L    D0-D2,-(A7)        ;0B6: 48E7E000
  118. LAB_0007:
  119.     BTST    #0,CIAA_CRA        ;0BA: 0839000000BFEE01
  120.     BNE.S    LAB_0007        ;0C2: 66F6
  121.  
  122. LAB_0008:
  123.     TST    D0            ;0C4: 4A40
  124.     BEQ    LAB_000C        ;0C6: 67000038
  125.     CMPI    #$005A,D0        ;0CA: 0C40005A
  126.     BHI.S    LAB_0009        ;0CE: 6204
  127.     MOVE    D0,D1            ;0D0: 3200
  128.     BRA.S    LAB_000A        ;0D2: 6004
  129.  
  130.  
  131. LAB_0009:
  132.     MOVE    #$005A,D1        ;0D4: 323C005A
  133. LAB_000A:
  134.     SUB    D1,D0            ;0D8: 9041
  135.     MULU    #$02CC,D1        ;0DA: C2FC02CC
  136.     MOVE    SR,D2            ;0DE: 40C2
  137.     ORI    #$0700,SR        ;0E0: 007C0700
  138.     MOVE.B    D1,CIAA_TALO        ;0E4: 13C100BFE401
  139.     LSR    #8,D1            ;0EA: E049
  140.     MOVE.B    D1,CIAA_TAHI        ;0EC: 13C100BFE501
  141.     MOVE    D2,SR            ;0F2: 46C2
  142. LAB_000B:
  143.     BTST    #0,CIAA_CRA        ;0F4: 0839000000BFEE01
  144.     BNE.S    LAB_000B        ;0FC: 66F6
  145.     BRA.S    LAB_0008        ;0FE: 60C4
  146. LAB_000C:
  147.     MOVEM.L    (A7)+,D0-D2        ;100: 4CDF0007
  148.     RTS                ;104: 4E75
  149.  
  150.  
  151.     MOVEM.L    D0/D2,-(A7)        ;106: 48E7A000
  152. LAB_000D:
  153.     BTST    #0,CIAA_CRA        ;10A: 0839000000BFEE01
  154.     BNE.S    LAB_000D        ;112: 66F6
  155.     MULU    #$B746,D0        ;114: C0FCB746
  156.     ADDI.L    #$00008000,D0        ;118: 068000008000
  157.     SWAP    D0            ;11E: 4840
  158.     TST    D0            ;120: 4A40
  159.     BEQ    LAB_000F        ;122: 67000022
  160.     MOVE    SR,D1            ;126: 40C1
  161.     ORI    #$0700,SR        ;128: 007C0700
  162.     MOVE.B    D0,CIAA_TALO        ;12C: 13C000BFE401
  163.     LSR    #8,D0            ;132: E048
  164.     MOVE.B    D0,CIAA_TAHI        ;134: 13C000BFE501
  165.     MOVE    D1,SR            ;13A: 46C1
  166. LAB_000E:
  167.     BTST    #0,CIAA_CRA        ;13C: 0839000000BFEE01
  168.     BNE.S    LAB_000E        ;144: 66F6
  169. LAB_000F:
  170.     MOVEM.L    (A7)+,D0/D2        ;146: 4CDF0005
  171.     RTS                ;14A: 4E75
  172.  
  173.  
  174. initread:
  175.     MOVEM.L    D0-D1,-(A7)        ;14C: 48E7C000
  176.     MOVE    #$7F00,ADKCON        ;150: 33FC7F0000DFF09E
  177.     MOVE    #$9100,ADKCON        ;158: 33FC910000DFF09E
  178.     MOVE.B    #$FF,CIAB_PRB        ;160: 13FC00FF00BFD100
  179.     MOVE.B    #$8F,CIAB_PRB        ;168: 13FC008F00BFD100
  180.     MOVE.B    #$FF,CIAB_PRB        ;170: 13FC00FF00BFD100
  181.     MOVE.B    #$F7,CIAB_PRB        ;178: 13FC00F700BFD100
  182.     BSR    LAB_0031        ;180: 610002DC
  183.     BTST    #2,CIAA_PRA        ;184: 0839000200BFE001
  184.     NOP                ;18C: 4E71
  185.     MOVE.B    #$7F,CIAB_PRB        ;18E: 13FC007F00BFD100
  186.     MOVE.B    #$77,CIAB_PRB        ;196: 13FC007700BFD100
  187.     MOVE    #$00FA,D0        ;19E: 303C00FA
  188.     MOVE    #$0010,D1        ;1A2: 323C0010
  189. LAB_0010:
  190.     BSR    LAB_0006        ;1A6: 6100FF0E
  191.     BTST    #5,CIAA_PRA        ;1AA: 0839000500BFE001
  192.     BEQ.S    LAB_0011        ;1B2: 6706
  193.     SUBQ    #1,D1            ;1B4: 5341
  194.     BNE.S    LAB_0010        ;1B6: 66EE
  195.     NOP                ;1B8: 4E71
  196. LAB_0011:
  197.     BSR    LAB_0028        ;1BA: 61000230
  198.     ORI.B    #$08,CCR        ;1BE: 003C0008
  199.     BRA.S    LAB_0012        ;1C2: 6004
  200.     ANDI.B    #$F7,CCR        ;1C4: 023C00F7
  201. LAB_0012:
  202.     MOVEM.L    (A7)+,D0-D1        ;1C8: 4CDF0003
  203.     RTS                ;1CC: 4E75
  204.     MOVE.B    #$FF,CIAB_PRB        ;1CE: 13FC00FF00BFD100
  205.     MOVE.B    #$87,CIAB_PRB        ;1D6: 13FC008700BFD100
  206.     MOVE.B    #$FF,CIAB_PRB        ;1DE: 13FC00FF00BFD100
  207.     RTS                ;1E6: 4E75
  208.     MOVE.B    #$FF,CIAB_PRB        ;1E8: 13FC00FF00BFD100
  209.     MOVE.B    #$F7,CIAB_PRB        ;1F0: 13FC00F700BFD100
  210.     BSR    LAB_0031        ;1F8: 61000264
  211. LAB_0013:
  212.     BTST    #2,CIAA_PRA        ;1FC: 0839000200BFE001
  213.     BNE.S    LAB_0013        ;204: 66F6
  214.     MOVE.B    #$FF,CIAB_PRB        ;206: 13FC00FF00BFD100
  215.     RTS                ;20E: 4E75
  216. LAB_0014:
  217.     MOVEM.L    A1,-(A7)        ;210: 48E70040
  218.     MOVEA.L    #$00000000,A1        ;214: 227C00000000
  219.     BSR    LAB_0019        ;21A: 61000030
  220.     MOVEM.L    (A7)+,A1        ;21E: 4CDF0200
  221.     RTS
  222.  
  223.  
  224. doread:
  225.  
  226.     MOVEM.L    D0-D1/A1,-(A7)        ;224: 48E7C040
  227. LAB_0015:
  228.     BSR    LAB_0019        ;228: 61000022
  229.     BPL.S    LAB_0017        ;22C: 6A14
  230.     SUBQ    #1,D1            ;22E: 5341
  231.     BEQ.S    LAB_0016        ;230: 670A
  232.     ADDQ    #1,D0            ;232: 5240
  233.     ADDA.L    #$00001800,A1        ;234: D3FC00001800
  234.     BRA.S    LAB_0015        ;23A: 60EC
  235. LAB_0016:
  236.     ORI.B    #$08,CCR        ;23C: 003C0008
  237.     BRA.S    LAB_0018        ;240: 6004
  238. LAB_0017:
  239.     ANDI.B    #$F7,CCR        ;242: 023C00F7
  240. LAB_0018:
  241.     MOVEM.L    (A7)+,D0-D1/A1        ;246: 4CDF0203
  242.     RTS                ;24A: 4E75
  243. LAB_0019:
  244.     MOVEM.L    D0-D4/A0-A3,-(A7)    ;24C: 48E7F8F0
  245.     MOVEA.L    A0,A2            ;250: 2448
  246.     MOVEA.L    A1,A3            ;252: 2649
  247.     BTST    #5,CIAA_PRA        ;254: 0839000500BFE001
  248.     NOP                ;25C: 4E71
  249.     NOP                ;25E: 4E71
  250.     BTST    #2,CIAA_PRA        ;260: 0839000200BFE001
  251.     NOP                ;268: 4E71
  252.     NOP                ;26A: 4E71
  253.     BSR    ReadRawTrack        ;26C: 610001A8
  254.     MOVE    #$0004,D4        ;270: 383C0004
  255. LAB_001A:
  256.     SUBQ    #1,D4            ;274: 5344
  257.     BMI.S    LAB_001C        ;276: 6B6E
  258.     MOVE    #$3020,D0        ;278: 303C3020
  259.     MOVE    #$4891,D1        ;27C: 323C4891
  260.     MOVEA.L    A2,A0            ;280: 204A
  261.     BSR    LAB_0035        ;282: 61000256
  262.     CMPI    #$4891,(A2)        ;286: 0C524891
  263.     BNE.S    LAB_001A        ;28A: 66E8
  264.     CMPI    #$44A9,2(A2)        ;28C: 0C6A44A90002
  265.     BNE.S    LAB_001A        ;292: 66E0
  266.     MOVE    #$0008,D0        ;294: 303C0008
  267.     LEA    4(A2),A0        ;298: 41EA0004
  268.     MOVEA.L    A0,A1            ;29C: 2248
  269.     BSR    DecodeBytes        ;29E: 61000378
  270.     MOVE    #$3008,D0        ;2A2: 303C3008
  271.     LEA    12(A2),A0        ;2A6: 41EA000C
  272.     BSR    LAB_003F        ;2AA: 610003B6
  273.     CMP.L    4(A2),D0        ;2AE: B0AA0004
  274.     BNE.S    LAB_001A        ;2B2: 66C0
  275.     MOVE    #$0008,D0        ;2B4: 303C0008
  276.     LEA    12(A2),A0        ;2B8: 41EA000C
  277.     MOVEA.L    A0,A1            ;2BC: 2248
  278.     BSR    DecodeBytes        ;2BE: 61000358
  279.     MOVE.L    (A0),D0            ;2C2: 2010
  280.     CMP    LAB_0005(PC),D0        ;2C4: B07AFDEE
  281.     BNE.S    LAB_001C        ;2C8: 661C
  282.     MOVE    #$3000,D0        ;2CA: 303C3000
  283.     LEA    20(A2),A0        ;2CE: 41EA0014
  284.     MOVEA.L    A3,A1            ;2D2: 224B
  285.     CMPA.L    #$00000000,A1        ;2D4: B3FC00000000
  286.     BEQ.S    LAB_001B        ;2DA: 6704
  287.     BSR    DecodeBytes        ;2DC: 6100033A
  288. LAB_001B:
  289.     ORI.B    #$08,CCR        ;2E0: 003C0008
  290.     BRA.S    LAB_001D        ;2E4: 6004
  291. LAB_001C:
  292.     ANDI.B    #$F7,CCR        ;2E6: 023C00F7
  293. LAB_001D:
  294.     MOVEM.L    (A7)+,D0-D4/A0-A3    ;2EA: 4CDF0F1F
  295.     RTS                ;2EE: 4E75
  296.     MOVEM.L    D0-D1/A1,-(A7)        ;2F0: 48E7C040
  297. LAB_001E:
  298.     BSR    LAB_0022        ;2F4: 61000022
  299.     BPL.S    LAB_0020        ;2F8: 6A14
  300.     SUBQ    #1,D1            ;2FA: 5341
  301.     BEQ.S    LAB_001F        ;2FC: 670A
  302.     ADDQ    #1,D0            ;2FE: 5240
  303.     ADDA.L    #$00001800,A1        ;300: D3FC00001800
  304.     BRA.S    LAB_001E        ;306: 60EC
  305. LAB_001F:
  306.     ORI.B    #$08,CCR        ;308: 003C0008
  307.     BRA.S    LAB_0021        ;30C: 6004
  308. LAB_0020:
  309.     ANDI.B    #$F7,CCR        ;30E: 023C00F7
  310. LAB_0021:
  311.     MOVEM.L    (A7)+,D0-D1/A1        ;312: 4CDF0203
  312.     RTS                ;316: 4E75
  313. LAB_0022:
  314.     MOVEM.L    D0-D1,-(A7)        ;318: 48E7C000
  315.     BTST    #5,CIAA_PRA        ;31C: 0839000500BFE001
  316.     NOP                ;324: 4E71
  317.     BTST    #2,CIAA_PRA        ;326: 0839000200BFE001
  318.     NOP                ;32E: 4E71
  319.     BTST    #3,CIAA_PRA        ;330: 0839000300BFE001
  320.     BEQ.S    LAB_0024        ;338: 6728
  321.     BSR    ReadRawTrack        ;33A: 610000DA
  322.     MOVE    #$0004,D1        ;33E: 323C0004
  323. LAB_0023:
  324.     SUBQ    #1,D1            ;342: 5341
  325.     BMI.S    LAB_0024        ;344: 6B1C
  326.     BSR    LAB_0026        ;346: 61000024
  327.     MOVE    #$3300,D0        ;34A: 303C3300
  328.     BSR    LAB_0037        ;34E: 610001FE
  329.     MOVE    LAB_0005(PC),D0        ;352: 303AFD60
  330.     BSR    LAB_0014        ;356: 6100FEB8
  331.     BPL.S    LAB_0023        ;35A: 6AE6
  332.     ORI.B    #$08,CCR        ;35C: 003C0008
  333.     BRA.S    LAB_0025        ;360: 6004
  334. LAB_0024:
  335.     ANDI.B    #$F7,CCR        ;362: 023C00F7
  336. LAB_0025:
  337.     MOVEM.L    (A7)+,D0-D1        ;366: 4CDF0003
  338.     RTS                ;36A: 4E75
  339. LAB_0026:
  340.     MOVEM.L    D0-D1/A0-A3,-(A7)    ;36C: 48E7C0F0
  341.     MOVEA.L    A1,A3            ;370: 2649
  342.     MOVE    #$AAAA,D0        ;372: 303CAAAA
  343.     MOVE    #$0173,D1        ;376: 323C0173
  344. LAB_0027:
  345.     MOVE    D0,(A0)+        ;37A: 30C0
  346.     DBF    D1,LAB_0027        ;37C: 51C9FFFC
  347.     MOVE.L    #$48914891,(A0)+    ;380: 20FC48914891
  348.     MOVE    #$44A9,(A0)+        ;386: 30FC44A9
  349.     MOVEA.L    A0,A2            ;38A: 2448
  350.     MOVE.L    #$00000000,(A0)+    ;38C: 20FC00000000
  351.     MOVE.L    #$00000000,(A0)+    ;392: 20FC00000000
  352.     MOVE    #$0000,(A0)        ;398: 30BC0000
  353.     MOVE    LAB_0005(PC),2(A0)    ;39C: 317AFD160002
  354.     MOVE    #$0004,D0        ;3A2: 303C0004
  355.     MOVEA.L    A0,A1